前一天我們講到了JSON, 現在我們也來講講另外一個常見的形式:csv
CSV(逗號分隔值)是一種常見的數據儲存格式,通常用於表格數據。通常你可以用excel或者numbers這些軟體去讀取它,甚或你可以用簡單的記事本、editor 去打開它
他大概長這個樣子
Name,Score
Jimmy,100
這裡會來表演如何使用Golang自帶的CSV庫來讀取和寫入CSV文件。
首先,我們來看如何讀取CSV吧。在下面的程式碼當中,我們定義了一個student struct,表示了一個學生的信息,包括姓名、中文成績、英文成績和電腦成績。我們使用encoding/csv包來讀取CSV文件,首先打開文件,然後設置CSV讀取器的分隔符為逗號。我們忽略了CSV文件的第一行(標題行),然後讀取一行數據,並使用strconv.Atoi函數將字符數據轉換為整數。最後,我們將讀取的數據放到student 中並輸出。
package main
import (
	"encoding/csv"
	"fmt"
	"os"
	"strconv"
)
func main() {
	type student struct {
		Name     string
		Chinese  int
		English  int
		Computer int
	}
	file, _ := os.Open("./example.csv") 
	defer file.Close()
	r := csv.NewReader(file)
	r.Comma = ','
	r.Read() //ignore first row (column)
	record, _ := r.Read()
	chinese, _ := strconv.Atoi(record[1])
	english, _ := strconv.Atoi(record[2])
	computer, _ := strconv.Atoi(record[3])
	var s = student{
		Name:     record[0],
		Chinese:  chinese,
		English:  english,
		Computer: computer,
	}
	fmt.Printf("Name %s \nChinese Score: %d \nEnglish Score: %d \nComputer Score: %d \n",
		s.Name, s.Chinese, s.English, s.Computer)
}
之後,我們來看如何寫一份CSV文件。在以下程式碼當中,我們先用os.Create建立一個空的CSV文件(其實就是建立檔案的流程啦,詳請可以看第四天的部分),然後建立一個csv.NewWriter。我們使用writer.WriteAll將資料寫入CSV文件......
package main
import (
	"encoding/csv"
	"fmt"
	"os"
)
func main() {
	f, _ := os.Create("./example.csv")
	writer := csv.NewWriter(f)
	err := writer.WriteAll([][]string{
		{"Name", "Score"},
		{"Jimmy", "100"},
	})
	if err != nil {
		fmt.Println("Write CSV Error !")
	} else {
		fmt.Println("Write CSV Success !")
	}
}